#pragma once

#ifndef ABSTRACT_FILE_FILTER
#define ABSTRACT_FILE_FILTER

/*! \file AbstractFileFilter.h
	\brief Header file for AbstractFileFilter class.
	
	Details.
*/

#include <string>

#include "FileMatch.h"

namespace analyzer {

	//! This class is used for represents a file filter.
	class AbstractFileFilter
	{
	public:
		/*! \fn AbstractFileFilter(void)
			\brief Constructor of class AbstractFileFilter
		*/
		AbstractFileFilter(void);
		/*! \fn virtual ~AbstractFileFilter(void)
			\brief Destructor of class AbstractFileFilter.
		*/
		virtual ~AbstractFileFilter(void);

		/*! \fn virtual FileMatch acceptFile(std::string fileName) =0
			\brief This funcion checks the file with existing filter.
			\param fileName Is the name of file which is checking of acceptable by file filter.
			\return FileMatch object with sets parameters (matched and file type).
		*/
		virtual FileMatch acceptFile(std::string fileName) =0;
	};
}

#endif // ABSTRACT_FILE_FILTER
